package com.hhf.feioj.judge.codesandbox.factory;

import com.github.mustachejava.Code;
import com.hhf.feioj.common.ErrorCode;
import com.hhf.feioj.exception.BusinessException;
import com.hhf.feioj.judge.codesandbox.CodeSandbox;
import com.hhf.feioj.judge.codesandbox.impl.ExampleCodeSandbox;
import com.hhf.feioj.judge.codesandbox.impl.RemoteCodeSandbox;
import com.hhf.feioj.judge.codesandbox.impl.ThirdPartyCodeSandbox;
import com.hhf.feioj.judge.codesandbox.proxy.CodeSandboxDynamicProxy;
import org.springframework.beans.factory.annotation.Value;

import java.lang.reflect.Proxy;

/**
 * @Author hhf
 * @Date 2024/10/27
 * @Description
 */
public class CodeSandboxProxyFactory {

    @Value(value = "${codesandbox.type:example}")
    private static String type;


    public static CodeSandbox getInstance() {

//        ExampleCodeSandbox codeSandbox = new ExampleCodeSandbox();
        RemoteCodeSandbox codeSandbox = new RemoteCodeSandbox();


        CodeSandbox proxy = (CodeSandbox) Proxy.newProxyInstance(
                CodeSandbox.class.getClassLoader(),
                new Class[]{CodeSandbox.class},
                new CodeSandboxDynamicProxy(codeSandbox));

        return proxy;
    }


}
